Node.js এর events মডিউলটি ব্যবহার করে আপনি Custom Events তৈরি এবং emit করতে পারেন। এটি ইভেন্ট-ড্রিভেন আর্কিটেকচার ব্যবহার করে যেখানে আপনার অ্যাপ্লিকেশনের মধ্যে কাস্টম ইভেন্ট তৈরি করা এবং সেই ইভেন্টগুলির জন্য লিসেনার (listener) সেট করা সম্ভব। EventEmitter ক্লাস ব্যবহার করে আপনি কাস্টম ইভেন্ট তৈরি এবং ট্রিগার করতে পারেন।
১. EventEmitter ক্লাস
Node.js এর EventEmitter ক্লাসটি ইভেন্ট তৈরি এবং হ্যান্ডল করার জন্য ব্যবহৃত হয়। এই ক্লাসের মাধ্যমে আপনি ইভেন্ট তৈরি করতে পারেন এবং যখন সেই ইভেন্টটি ট্রিগার হবে, তখন সংশ্লিষ্ট কোড এক্সিকিউট হয়।
কিছু সাধারণ মেথড:
on(event, listener): একটি কাস্টম ইভেন্টের জন্য লিসেনার যোগ করা।emit(event, [...args]): একটি কাস্টম ইভেন্ট ট্রিগার করা।once(event, listener): একটি ইভেন্টের জন্য একটি লিসেনার সেট করা, যা ইভেন্ট একবার ট্রিগার হলে পরে আর চলবে না।removeListener(event, listener): নির্দিষ্ট ইভেন্টের লিসেনার রিমুভ করা।
২. Custom Event তৈরি এবং Emit করা
এখানে একটি উদাহরণ দেওয়া হল যেখানে একটি কাস্টম ইভেন্ট তৈরি করা হবে এবং সেই ইভেন্টটি emit করা হবে:
উদাহরণ:
const EventEmitter = require('events');
// CustomEmitter ক্লাস তৈরি করা যা EventEmitter থেকে ইনহেরিট করবে
class CustomEmitter extends EventEmitter {}
// একটি ইভেন্ট ইমিটার তৈরি করা
const myEmitter = new CustomEmitter();
// একটি কাস্টম ইভেন্ট 'greet' তৈরি করা
myEmitter.on('greet', (name) => {
console.log(`Hello, ${name}! Welcome to Node.js.`);
});
// কাস্টম ইভেন্ট 'greet' emit করা
myEmitter.emit('greet', 'Alice'); // Output: Hello, Alice! Welcome to Node.js.
myEmitter.emit('greet', 'Bob'); // Output: Hello, Bob! Welcome to Node.js.এখানে, আমরা CustomEmitter নামক একটি ক্লাস তৈরি করেছি যা EventEmitter ক্লাসকে ইনহেরিট করে। তারপর, greet নামক একটি কাস্টম ইভেন্ট তৈরি করে, এবং সেই ইভেন্টের জন্য একটি listener (on) যোগ করেছি যা একটি নাম প্রিন্ট করবে। তারপর আমরা emit মেথড ব্যবহার করে ইভেন্টটি ট্রিগার (প্রেরণ) করেছি।
৩. once মেথড ব্যবহার
once মেথড দিয়ে আপনি এমন একটি ইভেন্টের জন্য লিসেনার সেট করতে পারেন যা শুধুমাত্র একবারই কাজ করবে। যখন ইভেন্টটি একবার ট্রিগার হবে, তখন সেই লিসেনারটি আর চালানো হবে না।
উদাহরণ:
const EventEmitter = require('events');
// CustomEmitter ক্লাস তৈরি করা
class CustomEmitter extends EventEmitter {}
const myEmitter = new CustomEmitter();
// একটি কাস্টম ইভেন্ট 'hello' তৈরি করা যা একবারই ট্রিগার হবে
myEmitter.once('hello', () => {
console.log('Hello event triggered!');
});
// কাস্টম ইভেন্ট 'hello' emit করা
myEmitter.emit('hello'); // Output: Hello event triggered!
myEmitter.emit('hello'); // কোন আউটপুট হবে নাএখানে, once মেথড ব্যবহার করে, hello ইভেন্টটি শুধু একবারই ট্রিগার হবে, এবং পরবর্তীতে আর এই ইভেন্টটি কোনো আউটপুট তৈরি করবে না।
৪. কাস্টম ইভেন্টে আর্গুমেন্ট পাঠানো
আপনি যখন emit মেথড ব্যবহার করেন, তখন আপনি আর্গুমেন্টও পাঠাতে পারেন। এই আর্গুমেন্টগুলো লিসেনার ফাংশনে পাস করা হবে।
উদাহরণ:
const EventEmitter = require('events');
// CustomEmitter ক্লাস তৈরি করা
class CustomEmitter extends EventEmitter {}
const myEmitter = new CustomEmitter();
// 'dataReceived' ইভেন্টে আর্গুমেন্ট পাঠানো
myEmitter.on('dataReceived', (data) => {
console.log(`Data received: ${data}`);
});
// কাস্টম ইভেন্ট 'dataReceived' emit করা
myEmitter.emit('dataReceived', 'Hello, this is custom data!');
// Output: Data received: Hello, this is custom data!এখানে, dataReceived নামক কাস্টম ইভেন্টে একটি আর্গুমেন্ট (ডেটা) পাঠানো হয়েছে, এবং সেই আর্গুমেন্টটি ইভেন্ট হ্যান্ডলারের মাধ্যমে গ্রহণ করা হয়েছে।
৫. Listener Remove করা
যদি আপনি কোন ইভেন্টের জন্য একটি listener রিমুভ করতে চান, তবে removeListener বা off মেথড ব্যবহার করতে পারেন।
উদাহরণ:
const EventEmitter = require('events');
// CustomEmitter ক্লাস তৈরি করা
class CustomEmitter extends EventEmitter {}
const myEmitter = new CustomEmitter();
const greetListener = (name) => {
console.log(`Hello, ${name}!`);
};
// ইভেন্টে লিসেনার যোগ করা
myEmitter.on('greet', greetListener);
// কাস্টম ইভেন্ট 'greet' emit করা
myEmitter.emit('greet', 'Alice'); // Output: Hello, Alice!
// লিসেনার রিমুভ করা
myEmitter.removeListener('greet', greetListener);
// কাস্টম ইভেন্ট 'greet' emit করা (এইবার কোন আউটপুট হবে না)
myEmitter.emit('greet', 'Bob');এখানে, প্রথমে greetListener নামক একটি লিসেনার যোগ করা হয়েছে এবং ইভেন্ট greet ট্রিগার হলে এটি কাজ করবে। পরে, removeListener মেথড ব্যবহার করে সেই লিসেনারটি রিমুভ করা হয়েছে, এবং এরপর ইভেন্ট ট্রিগার হলে আর কোন আউটপুট হবে না।
সারাংশ
- Custom Events Node.js এ কাস্টম ইভেন্ট তৈরি এবং ট্রিগার করার জন্য
EventEmitterক্লাস ব্যবহার করা হয়। onমেথড দিয়ে কাস্টম ইভেন্টের জন্য লিসেনার যোগ করা হয়, এবংemitমেথড দিয়ে ইভেন্টটি ট্রিগার করা হয়।onceমেথড একটি ইভেন্টের জন্য লিসেনার যোগ করে যা একবারই কার্যকরী হয়।removeListenerবাoffমেথড দিয়ে একটি নির্দিষ্ট ইভেন্টের লিসেনার রিমুভ করা যায়।
এই কাস্টম ইভেন্ট এবং ইভেন্ট-ড্রিভেন মডেল Node.js অ্যাপ্লিকেশনকে আরও মডুলার এবং স্কেলেবেল করে তোলে।
Read more